#include "stdafx.h"
#include ".\socketevent.h"
#include ".\BaseServer.h"
#include "PoolMgr.h"
#include <assert.h>
///////////////////////////////////////////////////////////////////////////////
// Namespace: Lumin
///////////////////////////////////////////////////////////////////////////////

namespace Lumin {
namespace Win32 {
///////////////////////////////////////////////////////////////////////////////
// CSocketEvent
///////////////////////////////////////////////////////////////////////////////
void *CSocketEvent::operator new(size_t objectSize)
{
	return CPoolMgr<CSocketEvent>::GetInstance()->Allocate(objectSize);
}

void CSocketEvent::operator delete(void *pObject, size_t /* bufferSize*/)
{
	CPoolMgr<CSocketEvent>::GetInstance()->Free(pObject);
}

CSocketEvent::CSocketEvent(CBaseServer* pBaseServer,SOCKET_EVENT event,CSocketSession* pSession,PACKET* pPacket)
	: m_pBaseServer(pBaseServer),m_pSession(pSession),m_pPacket(pPacket),m_ev(event)
{
	assert(pSession != NULL);
	assert(m_pBaseServer != NULL);
}

CSocketEvent::~CSocketEvent(void)
{
	if(m_pPacket){
		delete m_pPacket;
		m_pPacket = NULL;
	}
}

void CSocketEvent::Transparent()
{	
	m_pBaseServer->OnSocketEvent(this);
}
///////////////////////////////////////////////////////////////////////////////
// Namespace: Lumin::Win32
///////////////////////////////////////////////////////////////////////////////

} // End of namespace Win32
} // End of namespace Lumin 

